home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-04
/
bipl.zip
/
PROCS.ZIP
/
SIGNED.ICN
< prev
next >
Wrap
Text File
|
1992-11-20
|
1KB
|
41 lines
############################################################################
#
# File: signed.icn
#
# Subject: Procedure to put bits into signed integer
#
# Author: Robert J. Alexander
#
# Date: April 2, 1990
#
###########################################################################
#
# signed(s,n) -- Puts raw bits of characters of string s into an
# integer. The value is taken as signed.
#
# If large integers are supported, this routine will work for integers
# of arbitrary size.
#
# If large integers are not supported, the following are true:
#
# If the size of s is the same as or greater than the size of an
# integer in the Icon implementation, the result will be negative or
# positive depending on the value of the integer's sign bit.
#
# If the size of s is less than the size of an integer, the bytes are
# put into the low order part of the integer, with the remaining high
# order bytes filled with sign bits (the high order bit of the first
# character of the string). If the string is too large, the most
# significant bytes will be lost.
#
# This procedure is normally used for processing of binary data read
# from a file.
#
procedure signed(s)
local i
i := if ord(s[1]) >= 128 then -1 else 0
every i := ior(ord(!s),ishift(i,8))
return i
end